// 通用函数
import useClipboard from 'vue-clipboard3';
import {ElMessage} from 'element-plus';
import {formatDate} from '/@/utils/formatTime';
import {useI18n} from 'vue-i18n';

export default function (){
    const {t} = useI18n();
    const {toClipboard} = useClipboard();
    // 百分比格式化
    const precentFormat = (row:any,column:number,cellValue:any)=>{
        return cellValue ? `${cellValue}%` : '-'
    }
    // 列表日期时间格式化
    const dataFormatYMD = (row:any,column:number,cellValue:any)=>{
        if(!cellValue) return '-';
        return formatDate(new Date(cellValue),'YYYY-mm-dd');
    }
    // 列表日期时间格式化
    const dataFormatYMDHMS = (row:any,column:any,cellValue:any)=>{
        if(!cellValue) return '-';
        return formatDate(new Date(cellValue),'YYYY-mm-dd HH:MM:SS')
    }
    // 列表日期时间格式化
    const dataFormatHMS = (row:any,column:any,cellValue:any)=>{
        if(!cellValue) return '-';
        let time = 0;
        if(typeof row === 'number') time = row;
        if(typeof cellValue === 'number') time = cellValue;
        return formatDate(new Date(time * 1000),'HH:MM:SS')
    }
    // 小数点格式化
    const scaleFormat = (value:any = 0,scale:number = 4)=>{
        return Number.parseFloat(value).toFixed(scale);
    }
    // 小数点格式化
    const scale2Format = (value:any = 0)=>{
        return Number.parseFloat(value).toFixed(2)
    }
    // 点击复制文本
    const copyText = (text:string)=>{
        return new Promise((resolve,reject)=>{
            try{
                toClipboard(text);
                ElMessage.success('message.layout.copyTextSuccess');
                resolve(text);
            }
            catch(e){
                ElMessage.error('message.layout.copyTextError');
                reject(e)
            }
        })
    }
    return {
        precentFormat,
        dataFormatYMD,
        dataFormatYMDHMS,
        dataFormatHMS,
        scaleFormat,
        scale2Format,
        copyText
    }
}